// import com.alibaba.druid.sql.SQLUtils;
// import com.alibaba.druid.sql.ast.SQLName;
// import com.alibaba.druid.sql.ast.statement.SQLSelect;
// import com.alibaba.druid.sql.ast.statement.SQLSubqueryTableSource;
// import com.alibaba.druid.sql.dialect.oracle.visitor.OracleASTVisitor;
// import com.alibaba.druid.sql.visitor.SQLASTVisitor;
#pragma once
#include "../../../../ast/statement/SQLSubqueryTableSource.h"
#include "OracleSelectTableSource.h"

class OracleSelectSubqueryTableSource : virtual public SQLSubqueryTableSource, virtual public OracleSelectTableSource
{
public:
  OracleSelectSubqueryTableSource();

  OracleSelectSubqueryTableSource(string_ptr alias);

  OracleSelectSubqueryTableSource(SQLSelect_ptr select, string_ptr alias);

  OracleSelectSubqueryTableSource(SQLSelect_ptr select);
  SHAREDOBJECT(OracleSelectSubqueryTableSource);

  // @Override
  void accept0(SQLASTVisitor_ptr visitor);

  void accept0(OracleASTVisitor_ptr visitor);

  string_ptr toString();

  SQLObject_ptr clone();

  void cloneTo(OracleSelectSubqueryTableSource_ptr x);
};
